#ifndef GENERATORSCOLLECTION_H_
#define GENERATORSCOLLECTION_H_

#include "graph_support/attributes/CostFlowEdgeAttributes.h"
#include "graph_support/impls/vector/VectorGraph.h"
#include "graph_support/impls/compact/CompactGraph.h"

#include "graph_support/alg_correctness_tests/generate_graph/IGraphGenerator.h"
#include "graph_support/alg_correctness_tests/generate_graph/FlowEdgeAttributes4UnitTests.h"


namespace dinic_alg_test
{

/**
 * first - generator
 * second - count of runs
 */
typedef std::pair< generate_graph::IGraphGeneratorPtr, int > TestCase;

typedef GRAPH_SUPPORT_NS::impls::vector::VectorGraphTmpl<
		int,
		generate_graph::FlowEdgeAttributes4UnitTests,
		stdext::hash< int >,
		stdext::equal_to< int >
		> FlowGraph2Gen;
// TODO: graph name

typedef GRAPH_SUPPORT_NS::impls::compact::CompactGraphTmpl<
		int,
		GRAPH_SUPPORT_NS::attributes::CostFlowEdgeAttributesTmpl< double >,
		stdext::hash< int >,
		stdext::equal_to< int >
		> CostFlowGraph2Gen;

std::vector< TestCase > getTestCases4Dinic();
std::vector< TestCase > getTestCases4MinCostFlow();

}

#endif /* GENERATORSCOLLECTION_H_ */
